package com.yxx.business.service;

import java.util.List;

import com.yxx.common.core.domain.PageResult;
import com.yxx.business.entity.TbConstructionPhaseDo;
import com.yxx.business.entity.TbConstructionPhaseVo;
import com.yxx.business.entity.TbConstructionPhaseQueryDto;
import com.yxx.business.entity.TbConstructionPhaseEditDto;
import com.yxx.common.core.service.IServicePlus;

/**
 * 施工阶段Service接口
 *
 * @author yxx
 * @date 2025-08-16
 */
public interface ITbConstructionPhaseService extends IServicePlus<TbConstructionPhaseDo>, PhaseService {

    /**
     * 查询施工阶段分页结果
     *
     * @param tbConstructionPhaseQueryDto 施工阶段查询实体
     * @return 施工阶段分页
     */
    public PageResult<TbConstructionPhaseVo> selectTbConstructionPhaseVoPage(TbConstructionPhaseQueryDto tbConstructionPhaseQueryDto);

    /**
     * 查询施工阶段Vo列表
     *
     * @param tbConstructionPhaseQueryDto 施工阶段查询实体
     * @return 施工阶段集合
     */
    public List<TbConstructionPhaseVo> selectTbConstructionPhaseVoList(TbConstructionPhaseQueryDto tbConstructionPhaseQueryDto);

    /**
     * 查询施工阶段Do列表
     *
     * @param tbConstructionPhaseQueryDto 施工阶段查询实体
     * @return 施工阶段集合
     */
    public List<TbConstructionPhaseDo> selectTbConstructionPhaseDoList(TbConstructionPhaseQueryDto tbConstructionPhaseQueryDto);

    /**
     * 查询单个施工阶段
     *
     * @param constructionId 施工阶段主键
     * @return 施工阶段单个
     */
    public TbConstructionPhaseVo selectTbConstructionPhaseVoByConstructionId(Long constructionId);

    /**
     * 新增施工阶段
     *
     * @param tbConstructionPhaseQueryDto 施工阶段编辑实体
     * @return 结果
     */
    public int insertTbConstructionPhase(TbConstructionPhaseEditDto tbConstructionPhaseQueryDto);

    /**
     * 修改施工阶段
     *
     * @param constructionId 主键
     * @param tbConstructionPhaseQueryDto 施工阶段编辑实体
     * @return 结果
     */
    public int updateTbConstructionPhase(Long constructionId, TbConstructionPhaseEditDto tbConstructionPhaseQueryDto);

    /**
     * 批量删除施工阶段
     *
     * @param constructionIds 施工阶段主键集合
     * @return 结果
     */
    public int deleteTbConstructionPhaseByConstructionIds(List<Long> constructionIds);

    /**
     * 删除单个施工阶段信息
     *
     * @param constructionId 施工阶段主键
     * @return 结果
     */
    public int deleteTbConstructionPhaseByConstructionId(Long constructionId);
}
